package com.lanchetech.user.service;


import com.lanchetech.bean.request.AnchorRankReq;
import com.lanchetech.bean.request.AnchorWindowsReq;
import com.lanchetech.bean.request.DepositReq;
import com.lanchetech.bean.request.PartnerReq;
import com.lanchetech.bean.response.*;
import com.lanchetech.bean.vo.*;
import com.lanchetech.entity.AnchorWindows;
import com.lanchetech.entity.User;
import com.lanchetech.user.config.ReturnPayInfoVO;
import org.springframework.security.core.annotation.AuthenticationPrincipal;

import javax.servlet.http.HttpServletRequest;
import java.util.List;


public interface AnchorService {

    ResultData<ReturnPayInfoVO> createAnchorDeposit(@AuthenticationPrincipal User user,  Byte type, Long userAddressId, HttpServletRequest httpServletRequest);

    String depositWechatPayNotify(String xmlData);

    ResultData<BasePageResp<AnchorDepositVO>> getAnchorDepositPage(DepositReq req);

    BaseResp refundDeposit(Long id);

    ResultData<UserInfoVO> getAnchorHome(Long userId,User user);

    BaseResp editAnchorDescription(String description, User user);

    ResultData<ProductWindowsVO> getProductWindow(Long userId);

    ResultData<List<AnchorRankVO>> getAnchorRank(AnchorRankReq req);

    ResultData<AnchorRankVO> getCurrentAnchorRank(AnchorRankReq req);

    ResultData<BasePageResp<AnchorWindowsVO>> getAnchorWindowsPage(AnchorWindowsReq req,User user);

    BaseResp editAnchorWindows(AnchorWindows req);

    BaseResp deleteAnchorWindows(Long id, Long userId);

    BaseResp editAnchor(Long id, Byte hidden);

    ResultData<AnchorDepositResp> paidAnchorDeposit(User user);

    ResultData<BasePageResp<PartnerResp>> getPartnerPage(PartnerReq req);
}